package com.itheima;

import java.time.*;
import java.time.temporal.ChronoUnit;

public class LocalDatetimeDemo09 {
    /**
     * 计算时间日期间隔
     */
    public static void main(String[] args) {
        // 计算两个日期的日期间隔-年月日
        LocalDate date1 = LocalDate.of(2018, 2, 13);
        LocalDate date2 = LocalDate.of(2017, 3, 12);
        // 内部是用date2-date1，所以得到的结果是负数
        // 精确到日期
        Period period = Period.between(date1, date2);
        //P-11M-1D
        // System.out.println(period);
        // 0
        System.out.println("相差年数 ： " + period.getYears());
        // -11
        System.out.println("相差月数 ： " + period.getMonths());
        // -1
        System.out.println("相差日数 ： " + period.getDays());
        // 还可以这样获取相差的年月日(作用和上面的一样)
        System.out.println("-------------------------------");
        // 0
        long years = period.get(ChronoUnit.YEARS);
        //-11
        long months = period.get(ChronoUnit.MONTHS);
        //-1
        long days = period.get(ChronoUnit.DAYS);
        System.out.println("相差的年月日分别为 ： " + years + "," + months + "," + days);
        // 注意，当获取两个日期的间隔时，并不是单纯的年月日对应的数字相加减，而是会先算出具体差多少天，在折算成相差几年几月几日的

        // 计算两个时间的间隔
        System.out.println("-------------------------------");
        // 这里是当前时间
        LocalDateTime date3 = LocalDateTime.now();
        // 这里是 2018-1-13 13:22:30
        LocalDateTime date4 = LocalDateTime.of(2018, 1, 13, 22, 30, 10);
        //精确到时间
        // PT-51182H-18M-28.1S
        Duration duration = Duration.between(date3, date4);
        // System.out.println(duration);
        System.out.println(date3 + " 与 " + date4 + " 间隔  " + "\n"
                //-2132
                + " 天 :" + duration.toDays() + "\n"
                //-51182
                + " 时 :" + duration.toHours() + "\n"
                //-3070939
                + " 分 :" + duration.toMinutes() + "\n"
                //-184256365685
                + " 毫秒 :" + duration.toMillis() + "\n"
                //-184256365685000000
                + " 纳秒 :" + duration.toNanos() + "\n"
        );
// 注意，并没有获得秒差的，但既然可以获得毫秒，秒就可以自行获取了
    }
}
